Είμαι απόλυτος αρχάριος, μελετώ μόνος μου για δύο εβδομάδες για την προετοιμασία ενός bootcamp που έρχεται σε ένα μήνα. Σε μια προσπάθεια να βελτιώσω τις δεξιότητές μου και να "μάθω να σκέφτομαι σαν προγραμματιστής", έχω αναλάβει ένα έργο που προσπαθεί να λύσει ένα πραγματικό πρόβλημα. Η σύζυγός μου διευθύνει μια επιχείρηση που την απαιτεί να παράγει τιμολόγια για τους πελάτες της. Προσπαθώ να χρησιμοποιήσω HTML και JavaScript για να δημιουργήσω μια διαδικτυακή εφαρμογή που της επιτρέπει να δημιουργεί γρήγορα προσαρμοσμένα τιμολόγια αντί να τα γράφω χειροκίνητα κάθε φορά. Στην τρέχουσα έκδοση, ένα μήνυμα ζητά έναν αριθμό από αυτήν. Αυτός ο αριθμός δημιουργεί ίσο αριθμό σειρών τριών στηλών σε HTML. Αυτό της δίνει τη δυνατότητα να προσαρμόσει το τιμολόγιο με τον ακριβή αριθμό πεδίων που χρειάζεται. Η στήλη 1 περιέχει το όνομα του προϊόντος. Στην ίδια σειρά, η στήλη 2 περιέχει τον αριθμό μονάδας, ενώ η στήλη 3 περιέχει το συνολικό κόστος αυτού του προϊόντος, το οποίο είναι η βασική τιμή πολλαπλασιαζόμενη με τον αριθμό μονάδας. Θέλω να γίνει αυτός ο υπολογισμός με ένα κλικ στο κουμπί. Αλλά, είμαι κολλημένος. Για να εκτελέσω τα μαθηματικά, πρέπει να είμαι σε θέση να παίρνω τους ακέραιους αριθμούς από κάθε σειρά και στήλη και να τους μεταφέρω σε μια συνάρτηση. Αλλά επειδή κάθε σειρά και στήλη δημιουργήθηκε αυτόματα, δεν έχουν μοναδικά χαρακτηριστικά και δεν μπορούν έτσι να αναγνωριστούν. Είμαι σε θέση να εκτελώ τα μαθηματικά σε κάθε στήλη, αλλά όχι σε κάθε σειρά. Καθώς είμαι τόσο νέος, έχοντας μάθει μόνο από μερικά εισαγωγικά μαθήματα Codecademy και μερικά βίντεο στο YouTube, δεν ξέρω πώς να αξιολογήσω εάν πλησιάζω το έργο εντελώς λάθος ή εάν υπάρχει κάποιο κόλπο που μου λείπει ή αν υπάρχει κάτι που δεν έχει μάθει ακόμα. Αν κάποιος με κάποια εμπειρία θα μπορούσε να με ωθήσει προς τη σωστή κατεύθυνση, θα το εκτιμούσα πραγματικά! Έχω επισυνάψει όλο τον κώδικα σε αυτήν την ανάρτηση. Συγγνώμη αν είναι ένα φρικτό χάος. Πήγαινε εύκολα σε μένα, είμαι αρχάριος! const invDate = Ημερομηνία (); var field = " " + " " + "
"; document.getElementById ('newInvoice'). onclick = συνάρτηση () { let invoicedName = prompt ("Σε ποιον συντάχθηκε αυτό το τιμολόγιο;", "Εισαγάγετε ένα όνομα"); let productFields = Number (προτροπή ("Πόσα ονόματα προϊόντων σε αυτό το τιμολόγιο;", "Παρακαλώ εισάγετε έναν αριθμό")); αφήστε πεδία = " ας dynHtml = " if (invoicedName! = null && productFields! = null) { για (let i = 1; i <= productFields; i ++) { πεδία + = πεδίο}; } αλλιώς {alert ("Εισαγάγετε έγκυρες καταχωρήσεις."); }; dynHtml = ""; document.write (dynHtml); document.getElementById ('calculate'). onclick = συνάρτηση getQtyFields () { ας qtyInputs = document.getElementsByName ('qty'), resultQty = 0; για (let j = 0; j ![]()
" + "ΤΙΜΟΛΟΓΙΟ
" + "Προετοιμασμένο για: " + invoicedName + ", στο" + "
" + invDate + "
" + πεδία + "
" + "
2020-12-15 08:11:44
Όπως είπατε, το κύριο πρόβλημά σας είναι να βρείτε έναν τρόπο να δώσετε σε κάθε πεδίο εισαγωγής στη δική τους σειρά το δικό του μοναδικό αναγνωριστικό. Με αυτόν τον τρόπο μπορείτε να υπολογίσετε την τιμή για κάθε σειρά και να την εισαγάγετε στο πεδίο τιμών. Πρώτα πρέπει να ξεκινήσετε με τα πεδία: var field = " " + " " + "
"; document.getElementById ('newInvoice'). onclick = συνάρτηση () { ... για (let i = 1; i <= productFields; i ++) { πεδία + = πεδίο}; ... }; Κάθε ομάδα χρειάζεται το δικό της αναγνωριστικό. Με αυτόν τον τρόπο μπορείτε αργότερα να ανατρέξετε σε κάθε είσοδο σε κάθε σειρά για να υπολογίσετε την υπο-συνολική τιμή. Το χαρακτηριστικό class είναι κάτι που μπορείτε να αντιστοιχίσετε σε πολλά στοιχεία για να τα αναφέρετε αργότερα. Αυτή η τάξη μπορεί να είναι οτιδήποτε εφόσον δεν έρχεται σε αντίθεση με την τάξη για οποιαδήποτε άλλη σειρά. Μπορείτε να χρησιμοποιήσετε το i του βρόχου ως αναγνωριστικό σας, καθώς αλλάζει με κάθε βρόχο. για (let i = 1; i <= productFields; i ++) { var field = " " + " " + "
"; πεδία + = πεδίο }; Αυτό θα προσθέσει τη σειρά τάξης- {i} σε κάθε πεδίο σε κάθε σειρά. Καλύτερα ακόμα, μπορείτε να το αναπαράγετε στη δική του λειτουργία συνάρτηση createFields (i) { επιστροφή " " + " " + "
"; } για (let i = 1; i <= productFields; i ++) { πεδία + = createFields (i); }; Παίρνετε κάτι παρόμοιο με το παρακάτω html
Τώρα στη λειτουργία υπολογισμού, μπορείτε να ανατρέξετε σε αυτές τις σειρές και να υπολογίσετε την τιμή τους. Εδώ μπορείτε να κάνετε βρόχο πάνω από τα πεδία εισαγωγής "item". document.getElementById ('calculate'). onclick = συνάρτηση getQtyFields () { let itemInputs = document.getElementsByName ('αντικείμενο') για (let i = 0; i) για (let i = 0; i